package main

import (
	"flag"
	"fmt"
	"os"
)

// 内置的flag包实现命令行参数解析
func main() {
	// 简单获取命令行参数: 第一个元素是执行文件的名称
	for i, arg := range os.Args {
		fmt.Println(i, arg)
	}

	// flag
	name := flag.String("name", "张三", "姓名")
	age := flag.Int("age", 0, "年龄")
	married := flag.Bool("married", false, "婚否")
	delay := flag.Duration("delay", 0, "时间间隔")

	flag.Parse()
	fmt.Println(*name, *age, *married, *delay)
	fmt.Println(flag.Args())  // 返回命令行参数后的其他参数
	fmt.Println(flag.NArg())  // 返回命令行参数后的其他参数个数
	fmt.Println(flag.NFlag()) // 返回使用的命令行参数个数
}
